﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Help
{
    public static class WriteLog
    {
        #region 定义变量
        //添加标示锁定
        static object Mutex = new object();
        #endregion

        #region 系统日记记录(带文件名)
        /// <summary>
        /// 系统运行日记写流水
        /// </summary>
        /// <param name="str">日记写入内容</param>
        /// <param name="name">写入文件夹名，不传默认是log</param>
        public static void WriteW(string str, string name = "log")
        {
            lock (Mutex)
            {
                try
                {
                    #region 开始判断当然路径是否存在，不存在必须自行创建。
                    string path = Application.StartupPath + "\\" + name;
                    if (!Directory.Exists(path))//判断目录是否存在
                    {
                        Directory.CreateDirectory(path);
                    }
                    #endregion
                    #region 如果是同一天的话，则打开文件在末尾写入。如果不是同一天，则创建文件写入文件
                    //如果是同一天的话，则打开文件在末尾写入。如果不是同一天，则创建文件写入文件
                    //判断是否存在文件
                    if (File.Exists(Application.StartupPath + "\\" + name + "\\" + DateTime.Today.ToString("yyyyMMdd") + ".log"))
                    {
                        //如果存在文件，则向文件添加日志
                        StreamWriter sw = new StreamWriter(Application.StartupPath + "\\" + name + "\\" + DateTime.Today.ToString("yyyyMMdd") + ".log", true, System.Text.Encoding.Default);
                        sw.WriteLine("============================================================================");
                        sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":");
                        sw.WriteLine(str);
                        sw.Close();
                        return;
                    }
                    else
                    {
                        //如果文件不存在，则创建文件后向文件添加日志
                        StreamWriter sw2 = new StreamWriter(Application.StartupPath + "\\" + name + "\\" + DateTime.Today.ToString("yyyyMMdd") + ".log", true, System.Text.Encoding.Default);
                        sw2.WriteLine("============================================================================");
                        sw2.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":");
                        sw2.WriteLine(str);
                        sw2.Close();
                    }
                    #endregion
                }
                catch (Exception)
                {

                }
            }
        }
        #endregion
         
    }
}
